NAME

perlcheat - Perl 5 Cheat Sheet
DESCRIPTION

This 'cheat sheet' is a handy reference, meant for beginning Perl programmers. Not everything is mentioned, but 195 features may already be overwhelming.
The sheet

    CONTEXTS SIGILS ref ARRAYS HASHES
    void $scalar SCALAR @array %hash
    scalar @array ARRAY @array[0, 2] @hash{'a', 'b'}
    list %hash HASH $array[0] $hash{'a'}
    &sub CODE
    *glob GLOB SCALAR VALUES
    FORMAT number, string, ref, glob, undef
    REFERENCES
    \ reference $$foo[1] aka $foo->[1]
    $@%&* dereference $$foo{bar} aka $foo->{bar}
    [] anon. arrayref ${$$foo[1]}[2] aka $foo->[1]->[2]
    {} anon. hashref ${$$foo[1]}[2] aka $foo->[1][2]
    \() list of refs
    NUMBERS vs STRINGS LINKS
    OPERATOR PRECEDENCE = = perldoc.perl.org
    -> + . search.cpan.org
    ++ -- == != eq ne cpan.org
    ** < > <= >= lt gt le ge pm.org
    ! ~ \ u+ u- <=> cmp p3rl.org
    =~ !~ perlmonks.org
    * / % x SYNTAX
    + - . foreach (LIST) { } for (a;b;c) { }
    << >> while (e) { } until (e) { }
    named uops if (e) { } elsif (e) { } else { }
    < > <= >= lt gt le ge unless (e) { } elsif (e) { } else { }
    == != <=> eq ne cmp ~~ given (e) { when (e) {} default {} }
    &
    | ^ REGEX METACHARS REGEX MODIFIERS
    && ^ string begin /i case insensitive
    || // $ str end (bfr \n) /m line based ^$
    .. ... + one or more /s . includes \n
    ?: * zero or more /x ignore wh.space
    = += -= *= etc ? zero or one /p preserve
    , => {3,7} repeat in range /a ASCII /aa safe
    list ops | alternation /l locale /d dual
    not [] character class /u Unicode
    and \b word boundary /e evaluate /ee rpts
    or xor \z string end /g global
    () capture /o compile pat once
    DEBUG (?:p) no capture
    -MO=Deparse (?#t) comment REGEX CHARCLASSES
    -MO=Terse (?=p) ZW pos ahead . [^\n]
    -D## (?!p) ZW neg ahead \s whitespace
    -d:Trace (?<=p) ZW pos behind \K \w word chars
    (?<!p) ZW neg behind \d digits
    CONFIGURATION (?>p) no backtrack \pP named property
    perl -V:ivsize (?|p|p)branch reset \h horiz.wh.space
    (?&NM) cap to name \R linebreak
    \S \W \D \H negate
    FUNCTION RETURN LISTS
    stat localtime caller SPECIAL VARIABLES
    0 dev 0 second 0 package $_ default variable
    1 ino 1 minute 1 filename $0 program name
    2 mode 2 hour 2 line $/ input separator
    3 nlink 3 day 3 subroutine $\ output separator
    4 uid 4 month-1 4 hasargs $| autoflush
    5 gid 5 year-1900 5 wantarray $! sys/libcall error
    6 rdev 6 weekday 6 evaltext $@ eval error
    7 size 7 yearday 7 is_require $$ process ID
    8 atime 8 is_dst 8 hints $. line number
    9 mtime 9 bitmask @ARGV command line args
    10 ctime 10 hinthash @INC include paths
    11 blksz 3..10 only @_ subroutine args
    12 blcks with EXPR %ENV environment

ACKNOWLEDGEMENTS

The first version of this document appeared on Perl Monks, where several people had useful suggestions. Thank you, Perl Monks.

A special thanks to Damian Conway, who didn't only suggest important changes, but also took the time to count the number of listed features and make a Perl 6 version to show that Perl will stay Perl.
AUTHOR

Juerd Waalboer <#####@juerd.nl>, with the help of many Perl Monks.
SEE ALSO

    http://perlmonks.org/?node_id=216602 - the original PM post

    http://perlmonks.org/?node_id=238031 - Damian Conway's Perl 6 version

    http://juerd.nl/site.plp/perlcheat - home of the Perl Cheat Sheet
